# coding=utf-8
# 代码文件：chapter7/ch7.2.3.py

import os

from win32com.client import Dispatch


# 查找dir目录下ext后缀名的文件列表
# dir参数是文件所在目录，exts参数是指定文件后缀名列表

def findext(dir, exts):
    allfile = os.listdir(dir)
    # 返回过滤器对象
    files_filter = filter(lambda x: os.path.splitext(x)[1] in exts, allfile)
    # 从过滤器对象提取列表
    list2 = list(files_filter)
    return list2  # 返回过滤后条件文件名


if __name__ == '__main__':

    #  设置输入目录
    indir = r'C:\Users\tony\OneDrive\书\电子\Python自动化办公\code\chapter7\data\test\in'
    # 通过findext函数查找指定目录下的.doc和.docx文件
    list2 = findext(indir, ['.doc', '.docx'])

    # 打开Word文档
    wordapp = Dispatch('Word.Application')
    wordapp.Visible = False  # 设置文档不可见

    # 遍历文件列表
    for name in list2:
        infile = os.path.join(indir, name)  # 将目录和文件名连接起来
        document = wordapp.Documents.Open(infile)  # 打开word文件
        # 重新编排页面
        document.Repaginate()
        pagenum = document.ComputeStatistics(2)  # 返回文档页数
        wordnum = document.ComputeStatistics(6)  # 返回文档字符数
        # 2	页数
        # 1	行数
        # 3	字符数
        # 4	段落数
        # 6	亚洲语言字符数
        # 0 单词数

        print('文{0}文件：页数是：{1}，字符数：{2}'.format(name, pagenum, wordnum))

        document.Close(0)    # 关闭Word文档 0表示不保存

    wordapp.Quit()           # 退出Word应用
    print("Game Over！")
